// Student类：基类
class Student {
    // 私有属性
    private String name;
    private int age;
    private String studentId;

    // 构造方法
    public Student(String name, int age, String studentId) {
        this.name = name;
        this.age = age;
        this.studentId = studentId;
    }

    // 公有方法：获取学生的姓名
    public String getName() {
        return name;
    }

    // 公有方法：获取学生的年龄
    public int getAge() {
        return age;
    }

    // 公有方法：获取学生的学号
    public String getStudentId() {
        return studentId;
    }

    // 公有方法：显示学生信息
    public void displayInfo() {
        System.out.println("姓名: " + name);
        System.out.println("年龄: " + age);
        System.out.println("学号: " + studentId);
    }
}

// GraduateStudent类：继承Student类
class GraduateStudent extends Student {
    // 私有属性
    private String major;
    private String thesisTopic;

    // 构造方法
    public GraduateStudent(String name, int age, String studentId, String major, String thesisTopic) {
        // 调用父类构造方法初始化name, age, studentId
        super(name, age, studentId);
        this.major = major;
        this.thesisTopic = thesisTopic;
    }

    // 公有方法：获取研究生的专业
    public String getMajor() {
        return major;
    }

    // 公有方法：获取研究生的论文主题
    public String getThesisTopic() {
        return thesisTopic;
    }

    // 公有方法：显示研究生的所有信息
    public void displayGraduateInfo() {
        // 调用父类方法显示基本信息
        super.displayInfo();
        System.out.println("专业: " + major);
        System.out.println("论文主题: " + thesisTopic);
    }
}

public class t2 {
    public static void main(String[] args) {
        // 创建Student对象并显示信息
        Student student = new Student("张三", 20, "S12345");
        System.out.println("学生信息:");
        student.displayInfo();
        System.out.println(); // 分隔

        // 创建GraduateStudent对象并显示信息
        GraduateStudent graduateStudent = new GraduateStudent("李四", 25, "G67890", "计算机科学", "人工智能研究");
        System.out.println("研究生信息:");
        graduateStudent.displayGraduateInfo();
    }
}
